//
//  HMTabBarViewController.swift
//  WeiBo
//
//  Created by apple on 16/6/23.
//  Copyright © 2016年 itheima. All rights reserved.
//

import UIKit

class HMTabBarViewController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
//        // 添加子视图控制器
//        let home = HMHomeViewController()
//        
//        // 注意,遇到新的东西的时候,需要大家思路一些线索,然后去查看API
////        UITabBar
//        
//        home.title = "首页"
//        
//        home.tabBarItem.title = "首页"
//        
//        home.tabBarItem.image = UIImage(named: "tabbar_home")
//        
//        home.tabBarItem.selectedImage = UIImage(named: "tabbar_home_highlighted")
//        
//        addChildViewController(UINavigationController(rootViewController: home))
       
        
        addChildViewController()
        
       
        
        // tabBar 是一个只读属性
        // 只读属性只实现了属性的 get 方法
        // 只读属性怎么赋值???
        // KVC -- KVC是运行时的机制,即便是只读属性,甚至是 私有属性都可以通过KVC赋值
        let myTabBar = HMTabBar()
        // 注意: key一定要和 属性对应
        setValue(myTabBar, forKey: "tabBar")
//        tabBar = HMTabBar()
        // 3
        
        // 闭包 -> self -> tabbar -> 闭包
        myTabBar.closure = { [weak self] () -> () in
        
            // 目标:  SVProgressHUD.show()
            // 闭包里调用self,有可能存在循环引用
            // 建议同学们,不要 在闭包里上来就 __weak self
            // 并不是说所有的闭包都有循环引用
            
            HMComposeView.show(self!)
            
//            let compose = HMComposeView()
//            
////            self.view.addSubview(compose)
//            
//            // 可以通过顺传的方式,把 控制器传递到 View
//            
//            compose.show(self)
            
            printLog("闭包回调,弹出视图")
            
        }
    
    }

   /// 重载没有参数的方法
    func addChildViewController() {
        addChildViewController(HMHomeViewController(), title: "首页", image: "tabbar_home")
        addChildViewController(HMMessageViewController(), title: "消息", image: "tabbar_message_center")
        addChildViewController(HMFindViewController(), title: "发现", image: "tabbar_discover")
        addChildViewController(HMSettingViewController(), title: "我", image: "tabbar_profile")
    }
    
    // 添加子控制器的方法
    // 重载的概念
    // 选择的图片的名字,可以通过我们拼接文字名字来实现
    /// 添加子控制器,设置titile和图片
    func addChildViewController(childController: UIViewController,title: String,image: String) {
        
        childController.tabBarItem = HMTabBarItem()
        
        childController.title = title
        
        childController.tabBarItem.image = UIImage(named: image)
        
        childController.tabBarItem.selectedImage = UIImage(named: "\(image)_highlighted")
        
        addChildViewController(UINavigationController(rootViewController: childController))
        
    }

}
